package com.example.archive.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.archive.entity.Training;

import java.util.List;

/**
 * 培训资料服务接口
 * 继承MyBatis Plus的IService接口，提供基础CRUD操作
 * 定义培训资料相关的业务逻辑方法
 */
public interface TrainingService extends IService<Training> {
    
    /**
     * 获取已发布的培训资料列表
     * 供普通员工查看，只返回状态为published的培训资料
     * 关联查询上传者姓名信息
     * 
     * @return 已发布的培训资料列表
     */
    List<Training> getPublishedTrainings();
    
    /**
     * 分页查询培训资料（带上传人信息）
     * 供管理员和领导查看，返回所有状态的培训资料
     * 支持分页查询，关联查询上传者姓名信息
     * 
     * @param current 当前页码
     * @param size 每页大小
     * @return 分页查询结果
     */
    Page<Training> getTrainingsWithUploader(int current, int size);
    
    /**
     * 上传培训资料
     * 档案管理员上传培训资料，保存到数据库
     * 
     * @param training 培训资料对象
     * @return 上传是否成功
     */
    boolean uploadTraining(Training training);
    
    /**
     * 审核培训资料
     * 企业领导审核档案管理员上传的培训资料
     * 更新资料状态为published（通过）或rejected（驳回）
     * 
     * @param trainingId 培训资料ID
     * @param status 审核后的状态
     * @return 审核是否成功
     */
    boolean approveTraining(Integer trainingId, String status);
} 